
import models

from django.contrib import admin
from django import forms

class FechaAdminForm(forms.ModelForm):
    
    def clean(self):
        cleaned_data = self.cleaned_data
        fecha_ini = cleaned_data.get("fecha_ini")
        fecha_fin = cleaned_data.get("fecha_fin")
        
        if fecha_ini >= fecha_fin:
            raise forms.ValidationError("La fecha de inicio (" + str(fecha_ini) + ") debe ser menor que la de fin (" + str(fecha_fin) + ")")
        return cleaned_data

class TemporadaAdminForm(FechaAdminForm):
    class Meta:
        model = models.Temporada

class JornadaAdminForm(FechaAdminForm):
    date_hierarchy = 'fecha_ini'
    ordering = ( '-fecha_ini',)

    class Meta:
        model = models.Jornada
    
    def clean(self):
        cleaned_data = self.cleaned_data
        temporada = cleaned_data.get("temporada")
        fecha_ini = cleaned_data.get("fecha_ini").date()
        fecha_fin = cleaned_data.get("fecha_fin").date()
                
        if fecha_ini < temporada.fecha_ini or fecha_ini > temporada.fecha_fin:
            raise forms.ValidationError("La fecha de inicial (" + str(fecha_ini) + ") de la jornada no pertenece a la temporada (" + str(temporada) + ")")
        if fecha_fin > temporada.fecha_fin or fecha_fin < temporada.fecha_ini:
            raise forms.ValidationError("La fecha de final (" + str(fecha_fin) + ") de la jornada no pertenece a la temporada (" + str(temporada) + ")")
        return cleaned_data
    
class TemporadaAdmin(admin.ModelAdmin):
    form = TemporadaAdminForm

class JornadaAdmin(admin.ModelAdmin):
    form = JornadaAdminForm
    
class EquipoAdmin(admin.ModelAdmin):
    pass    
    
class PartidoAdmin(admin.ModelAdmin):
    pass    
    
class ResultadoAdmin(admin.ModelAdmin):
    pass    

class ResultadoSetAdmin(admin.ModelAdmin):
    pass    

class QuinielaAdmin(admin.ModelAdmin):
    #filter_horizontal = ('partidos',)
    pass

class UserQuinielaAdmin(admin.ModelAdmin):
    pass

admin.site.register(models.Temporada, TemporadaAdmin)
admin.site.register(models.Jornada, JornadaAdmin)
admin.site.register(models.Equipo, EquipoAdmin)
admin.site.register(models.Partido, PartidoAdmin)
admin.site.register(models.Quiniela, QuinielaAdmin)
admin.site.register(models.Resultado, ResultadoAdmin)
admin.site.register(models.ResultadoSet, ResultadoSetAdmin)
admin.site.register(models.UserQuiniela, UserQuinielaAdmin)
